package com.sunshine.ssm.util;

import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;

/**
 * Created by WeiHong on 2016/12/23.
 *
 * 发送邮件是一件非常耗时的事情，因此这里设计一个线程类来发送邮件,这个线程类用于给指定的用户发送Email
 */
public class SendMail extends Thread {

    //用于给注册用户发送的邮件
    private String from = "weihong0755@163.com";
    //邮件用户名
    private String username = "weihong0755";
    //邮件密码
    private String password = "";

    private String host = "smtp.163.com";

    @Override
    public void run(){
        try {
            Properties prop = new Properties();
            prop.setProperty("mail.host", host);
            prop.setProperty("mail.transport.protocol", "smtp");
            prop.setProperty("mail.smtp.auth", "true");
            //设置端口号
//            prop.put("mail.smtp.port", "465");
			/*----------------------使用javaMail发送邮件的5个步骤-------------------------*/
            //1、创建session
            Session session = Session.getInstance(prop);
            //开启Session的debug模式，这样就可以查看到程序发送Email的运行状态
            session.setDebug(true);
            //2、通过session得到Transport
            Transport ts = session.getTransport();
            //3、使用邮箱的用户名和密码连上邮件服务器，发送邮件时，发件人需要提交邮箱的用户名和密码给smtp服务器，用户名和密码都通过验证之后才能够正常发送邮件给收件人。
            ts.connect(host, username, password);
            //4、创建邮件
            Message message = createMail(session);
            //5、发送邮件
            ts.sendMessage(message, message.getAllRecipients());
            ts.close();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    public Message createMail(Session session) throws Exception{
        //创建邮件对象
        MimeMessage message = new MimeMessage(session);
        //指明邮件的发件人
        message.setFrom(new InternetAddress(from));
        //指明邮件的收件人
        message.setRecipient(Message.RecipientType.TO, new InternetAddress("hong.wei02@bqjr.cn"));
        //邮件标题提
        message.setSubject("用户注册邮件");
        //邮件内容
        String info = "这是一个邮件内容";
        message.setContent(info, "text/html;charset=UTF-8");
        message.saveChanges();
        return message;
    }

}
